/*
 * 03指针数组.c
 *
 *  Created on: 2024年3月9日
 *      Author: HP
 */
#include<stdlib.h>
#include<math.h>
#include<time.h>

int main0603(void){
	// 定义指针数组
	int a = 10;
	int b = 20;
	int c = 30;
	int* arr[3] = {&a, &b, &c};
	printf("%d\n", *arr[0]); // 10
	return 0;
}

int main060301(void) {
	// 指针数组里面存储的元素都是指针
	int a[] = {1,2,3};
	int b[] = {4,5,6};
	int c[] = {7,8,9};
	// 指针数组是一个特殊的二维数组模型，指针数组对应于二级指针
	int* arr[] = {a, b, c};
	int** p = arr; // 相当于二维指针，下面把arr换成p也是可以的
	printf("%p\n", arr[0]);
	printf("%p\n", a);
	printf("%p\n", &a[0]); // 这三个都是一个地址

	for(int i=0; i<3; i++){
		for(int j=0; j<3; j++){
			printf("%d ", *(arr[i]+j));
		}
		puts("");
	}

	for(int i=0; i<3; i++){
		for(int j=0; j<3; j++){
			printf("%d ", *(*(arr+i)+j)); // *(arr+i)得到a/b/c的首地址
		}
		puts("");
	}

	return 0;
}
